Capacitive sensing is a technology based on capacitive coupling that is used in many different types of sensors, including those to detect and measure touch and gestures on surfaces, proximity, position or displacement, humidity, fluid level, and acceleration. Capacitive sensing may be used as a human interface device (HID) technology, for example to replace the computer mouse. Capacitive touch sensors are used in many devices such as laptop trackpads, digital audio players, computer displays, mobile phones, mobile devices, tablets and others. Capacitive sensors are advantageous for their versatility, reliability and robustness, unique human-device interface and cost reduction over mechanical switches. Technologies such as multi-touch and gesture-based touch screens (i.e., touch pads) are also premised on capacitive sensing.
Mutual capacitive sensors have a capacitor at each intersection of each row and each column. A 12-by-16 array, for example, would have 192 independent capacitors. A voltage is applied to the rows or columns. Bringing a finger or conductive stylus near the surface of the sensor changes the local electric field which reduces the mutual capacitance. The capacitance change at every individual point on the grid can be measured to accurately determine the touch location by measuring the voltage in the other axis. Mutual capacitance allows multi-touch operation where multiple fingers, palms or styli can be accurately tracked at the same time.
Self-capacitance sensors can have the same X-Y grid as mutual capacitance sensors, but the columns and rows operate independently. With self-capacitance, the capacitive load on each column or row is measured using current sensing. This produces a stronger signal than mutual capacitance sensing, but it is unable to resolve accurately more than one finger, which results in “ghosting”, or misplaced location sensing.
In some contact detection devices, such as capacitance sensing surfaces, a mismatch occurs between real finger touch position and calculated position. For example, when one or more fingers are moved in a straight line across the surface of certain touch-sensitive devices, the calculated positions may exhibit deviations (jags) from the straight line of actual motion. FIGS. 1 and 2 illustrate an example of calculated position for two fingers making straight line motion across a touch-sensitive device surface. Erroneous touch position calculations (illustrated by jags in the figures) may have undesirable effects on device operation, such as false button triggers, improper gesture recognition, and poor imaging.
Previous attempts to address this problem have involved centroid calculations. These approaches have a drawback that close-together touches have less linearity than further spaced ones. For example, a touch calculation using a 3×3 centroid matrix is illustrated in FIGS. 3 and 4. FIG. 3 shows an example calculation for a 3×3 sensor touch area and a 3×3 matrix calculation. A local maximum for the touch intensity is identified and a calculation position to assign to the touch is determined by finding an arithmetic average of touch intensity in a 3×3 matrix around the local maximum. This technique yields an accurate calculated position if the touch covers an area of up to 3×3 sensors. If the touch covers a larger area (for example, 4×4 or 5×5 sensors) then the 3×3 centroid algorithm returns an inaccurate position because it does not take into account sensor signals from outside the 3×3 calculation area. This scenario is illustrated in FIG. 4.
One approach to alleviate this problem is to use a larger centroid matrix in the position calculation. This approach however may yield an inaccurate position calculation when two or more different touches are spaced closely together. Therefore larger centroid matrices are not always useful in multi-touch applications.